/* 编写拓展所需要包含的一些头文件 */              
#include "postgres.h"              
#include "funcapi.h"              
#include "fmgr.h"              
     
PG_MODULE_MAGIC;/* PostgreSQL 拓展都需要这个宏展开 */              
              
PG_FUNCTION_INFO_V1(pg_hello_world);/* 导出一个名为 pg_hello_world 的函数 */              
PG_FUNCTION_INFO_V1(pg_hello_worldv2);/* 导出一个名为 pg_hello_worldv2 的函数 */              


Datum pg_hello_world(PG_FUNCTION_ARGS)              
{              
    /* 返回一条类型为 CSTRING 的关系型数据（这里需要同 SQL 文件中注册的返回类型相对应） */              
    PG_RETURN_CSTRING("Hello world!");              
}


Datum pg_hello_worldv2(PG_FUNCTION_ARGS)              
{              
    /* 返回一条类型为 CSTRING 的关系型数据（这里需要同 SQL 文件中注册的返回类型相对应） */              
    PG_RETURN_CSTRING("Hello worldv2!");              
}

PG_FUNCTION_INFO_V1(ora_nvl);

Datum 
ora_nvl(PG_FUNCTION_ARGS)
{
	if (!PG_ARGISNULL(0))
		PG_RETURN_DATUM(PG_GETARG_DATUM(0));

	if (!PG_ARGISNULL(1))
		PG_RETURN_DATUM(PG_GETARG_DATUM(1));

	PG_RETURN_NULL();
}
PG_FUNCTION_INFO_V1(test_add_fun);

Datum test_add_fun(PG_FUNCTION_ARGS)
{
	int sum ,a,b;
	
	a=PG_GETARG_INT32(0);
	b=PG_GETARG_INT32(1);
 
	sum = a + b;
	PG_RETURN_INT32(sum);
}